gusucode.com > VC++ 仿QQ2006界面 > VC++ 仿QQ2006界面/gusucode/NUKDlg.cpp

    //Download by http://www.NewXing.com
// NUKDlg.cpp : 实现文件
//

#include "stdafx.h"
#include "NUK.h"
#include "NUKDlg.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#endif


// CNUKDlg 对话框




CNUKDlg::CNUKDlg(CWnd* pParent /*=NULL*/)
	: CDialog(CNUKDlg::IDD, pParent)
{
	m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
	PointSpace = 3;
	BorderSpace = 4;
	m_bMouseDown = false;
	m_strStatus = _T("89642685(在线)");
	m_font.CreateFont(
	   15,                        // nHeight
	   0,                         // nWidth
	   0,                         // nEscapement
	   0,                         // nOrientation
	   FW_BOLD,                 // nWeight
	   FALSE,                     // bItalic
	   FALSE,                     // bUnderline
	   0,                         // cStrikeOut
	   ANSI_CHARSET,              // nCharSet
	   OUT_DEFAULT_PRECIS,        // nOutPrecision
	   CLIP_DEFAULT_PRECIS,       // nClipPrecision
	   DEFAULT_QUALITY,           // nQuality
	   DEFAULT_PITCH | FF_SWISS,  // nPitchAndFamily
	   _T("Arial"));                 // lpszFacename
}

void CNUKDlg::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	DDX_Control(pDX, IDC_SKINTAB, m_skintab);
}

BEGIN_MESSAGE_MAP(CNUKDlg, CDialog)
	ON_WM_PAINT()
	ON_WM_QUERYDRAGICON()
	//}}AFX_MSG_MAP
	ON_WM_GETMINMAXINFO()
	ON_WM_SIZING()
	ON_WM_ERASEBKGND()
	ON_WM_LBUTTONDOWN()
	ON_WM_TIMER()
	ON_WM_LBUTTONUP()
	ON_WM_SETCURSOR()
	ON_WM_MOUSEMOVE()
	ON_WM_DESTROY()
	ON_BN_CLICKED(IDC_BTN_CLOSE, &CNUKDlg::OnBnClickedCloseBtn)
	ON_BN_CLICKED(IDC_BTN_MENU, &CNUKDlg::OnBnClickedMenuBtn)
	ON_BN_CLICKED(IDC_BTN_USERHEAD, &CNUKDlg::OnBnClickedUserHeardBtn)
	ON_BN_CLICKED(IDC_BTN_SEARCH, &CNUKDlg::OnBnClickedSearchBtn)
	ON_BN_CLICKED(IDC_BTN_HOSTING, &CNUKDlg::OnBnClickedHostingBtn)
	ON_BN_CLICKED(IDC_BTN_STATUS, &CNUKDlg::OnBnClickedStatusBtn)
END_MESSAGE_MAP()


// CNUKDlg 消息处理程序

BOOL CNUKDlg::OnInitDialog()
{
	CDialog::OnInitDialog();

	// 设置此对话框的图标。当应用程序主窗口不是对话框时,框架将自动
	//  执行此操作
	SetIcon(m_hIcon, TRUE);			// 设置大图标
	SetIcon(m_hIcon, FALSE);		// 设置小图标

	// TODO: 在此添加额外的初始化代码
	CRect rcClient;
	GetClientRect(&rcClient);
	
	//设置背景图片
	SetTopLeftImage(IDB_BITMAP_FRAME_TOPLEFT);
	SetTopMidImage(IDB_BITMAP_FRAME_TOPMID);
	SetTopRightImage(IDB_BITMAP_FRAME_TOPRIGHT);

	SetCenterLeftImage(IDB_BITMAP_FRAME_CENTERLEFT);
	SetCenterMidImage(IDB_BITMAP_FRAME_CENTERMID);
	SetCenterRightImage(IDB_BITMAP_FRAME_CENTERRIGHT);

	SetBottomLeftImage(IDB_BITMAP_FRAME_BOTTOMLEFT);
	SetBottomMidImage(IDB_BITMAP_FRAME_BOTTOMMID);
	SetBottomRightImage(IDB_BITMAP_FRAME_BOTTOMRIGHT);

	m_closeBtn.Create(NULL,WS_CHILD | WS_VISIBLE ,CRect(rcClient.Width()-21,5,rcClient.Width()-21+16,5+16),this,IDC_BTN_CLOSE);
	m_closeBtn.SetImage(IDB_BITMAP_CLOSEBTN_NORMAL,IDB_BITMAP_CLOSEBTN_HOVER,IDB_BITMAP_CLOSEBTN_DOWN,
		IDB_BITMAP_CLOSEBTN_NORMAL);

	//////////////////////////
	CString strNormal,strHover,strDown,strDisable;
	CString strMouseOut,strMouseIn;
	/////////////////////////
	m_userHeadBtn.Create(NULL,WS_CHILD | WS_VISIBLE ,CRect(8,30,8+32,30+32),this,IDC_BTN_USERHEAD);
	m_userHeadBtn.SetImage(IDB_BITMAP_USERHEAD,IDB_BITMAP_USERHEAD,IDB_BITMAP_USERHEAD,
		IDB_BITMAP_USERHEAD);
	m_statusBtn.Create(NULL,WS_CHILD | WS_VISIBLE ,CRect(41,28,41+11,28+36),this,IDC_BTN_STATUS);
	m_statusBtn.SetImage(IDB_BITMAP_STATUSBTN_NORMAL,IDB_BITMAP_STATUSBTN_HOVER,IDB_BITMAP_STATUSBTN_DOWN,
		IDB_BITMAP_STATUSBTN_NORMAL);

	m_mailBtn.Create(NULL,WS_CHILD | WS_VISIBLE ,CRect(55,50,55+35,50+16),this,IDC_BTN_MAIL);
	strMouseOut.LoadStringW(IDS_PATH_MAILBTN_MOUSEOUT);
	strMouseIn.LoadStringW(IDS_PATH_MAILBTN_MOUSEIN);
	m_mailBtn.SetIcon(strMouseOut,strMouseIn);
	m_mailBtn.SetWindowTextW(_T("(0)"));
	m_mailBtn.SetTextPos(CPoint(17,0));
	m_mailBtn.SetColor(RGB(0,28,123),RGB(255,255,255));

	m_hostingBtn.Create(NULL,WS_CHILD | WS_VISIBLE ,CRect(90,50,90+35,50+16),this,IDC_BTN_HOSTING);
	strMouseOut.LoadStringW(IDS_PATH_HOSTINGBTN_MOUSEOUT);
	strMouseIn.LoadStringW(IDS_PATH_HOSTINGBTN_MOUSEIN);
	m_hostingBtn.SetIcon(strMouseOut,strMouseIn);
	m_hostingBtn.SetWindowTextW(_T("(1)"));
	m_hostingBtn.SetTextPos(CPoint(17,0));
	m_hostingBtn.SetColor(RGB(0,28,123),RGB(255,255,255));

	m_paymentBtn.Create(NULL,WS_CHILD | WS_VISIBLE ,CRect(125,50,125+16,50+16),this,IDC_BTN_PAYMENT);
	strMouseOut.LoadStringW(IDS_PATH_PAYMENTBTN_MOUSEOUT);
	strMouseIn.LoadStringW(IDS_PATH_PAYMENTBTN_MOUSEIN);
	m_paymentBtn.SetIcon(strMouseOut,strMouseIn);

	//////////////////////////
	m_mobileBtn.Create(NULL,WS_CHILD | WS_VISIBLE ,CRect(12,rcClient.bottom-52,12+17,rcClient.bottom-52+17),this,IDC_BTN_MOBILE);
	strMouseOut.LoadStringW(IDS_PATH_MOBILEBTN_MOUSEOUT);
	strMouseIn.LoadStringW(IDS_PATH_MOBILEBTN_MOUSEIN);
	m_mobileBtn.SetIcon(strMouseOut,strMouseIn);

	m_gameBtn.Create(NULL,WS_CHILD | WS_VISIBLE ,CRect(12+26,rcClient.bottom-52,12+26+17,rcClient.bottom-52+17),this,IDC_BTN_GAME);
	strMouseOut.LoadStringW(IDS_PATH_GAMEBTN_MOUSEOUT);
	strMouseIn.LoadStringW(IDS_PATH_GAMEBTN_MOUSEIN);
	m_gameBtn.SetIcon(strMouseOut,strMouseIn);

	m_ttBtn.Create(NULL,WS_CHILD | WS_VISIBLE ,CRect(12+26*2,rcClient.bottom-52,12+26*2+17,rcClient.bottom-52+17),this,IDC_BTN_TT);
	strMouseOut.LoadStringW(IDS_PATH_TTBTN_MOUSEOUT);
	strMouseIn.LoadStringW(IDS_PATH_TTBTN_MOUSEIN);
	m_ttBtn.SetIcon(strMouseOut,strMouseIn);

	m_chatBtn.Create(NULL,WS_CHILD | WS_VISIBLE ,CRect(12+26*3,rcClient.bottom-52,12+26*3+17,rcClient.bottom-52+17),this,IDC_BTN_CHAT);
	strMouseOut.LoadStringW(IDS_PATH_CHATBTN_MOUSEOUT);
	strMouseIn.LoadStringW(IDS_PATH_CHATBTN_MOUSEIN);
	m_chatBtn.SetIcon(strMouseOut,strMouseIn);

	m_petBtn.Create(NULL,WS_CHILD | WS_VISIBLE ,CRect(12+26*4,rcClient.bottom-52,12+26*4+17,rcClient.bottom-52+17),this,IDC_BTN_PET);
	strMouseOut.LoadStringW(IDS_PATH_PETBTN_MOUSEOUT);
	strMouseIn.LoadStringW(IDS_PATH_PETBTN_MOUSEIN);
	m_petBtn.SetIcon(strMouseOut,strMouseIn);

	m_musicBtn.Create(NULL,WS_CHILD | WS_VISIBLE ,CRect(12+26*5,rcClient.bottom-52,12+26*5+17,rcClient.bottom-52+17),this,IDC_BTN_MUSIC);
	strMouseOut.LoadStringW(IDS_PATH_MUSICBTN_MOUSEOUT);
	strMouseIn.LoadStringW(IDS_PATH_MUSICBTN_MOUSEIN);
	m_musicBtn.SetIcon(strMouseOut,strMouseIn);

	m_tvBtn.Create(NULL,WS_CHILD | WS_VISIBLE ,CRect(12+26*6,rcClient.bottom-52,12+26*6+17,rcClient.bottom-52+17),this,IDC_BTN_TV);
	strMouseOut.LoadStringW(IDS_PATH_TVBTN_MOUSEOUT);
	strMouseIn.LoadStringW(IDS_PATH_TVBTN_MOUSEIN);
	m_tvBtn.SetIcon(strMouseOut,strMouseIn);
	//////////////////////////
	m_menuBtn.Create(NULL,WS_CHILD | WS_VISIBLE ,CRect(0,rcClient.bottom-30,65,rcClient.bottom-30+24),this,IDC_BTN_MENU);
	strNormal.LoadStringW(IDS_PATH_MENUBTN_NORMAL);
	strHover.LoadStringW(IDS_PATH_MENUBTN_HOVER);
	strDown.LoadStringW(IDS_PATH_MENUBTN_DOWN);
	strDisable.LoadStringW(IDS_PATH_MENUBTN_DISABLE);
	m_menuBtn.SetImage(strNormal,strHover,strDown,strDisable);

	m_msgManagerBtn.Create(NULL,WS_CHILD | WS_VISIBLE ,CRect(75,rcClient.bottom-25,80+17,rcClient.bottom-25+17),this,IDC_BTN_MSGMANAGER);
	strMouseOut.LoadStringW(IDS_PATH_MSGBTN_MOUSEOUT);
	strMouseIn.LoadStringW(IDS_PATH_MSGBTN_MOUSEIN);
	m_msgManagerBtn.SetIcon(strMouseOut,strMouseIn);

	m_searchBtn.Create(NULL,WS_CHILD | WS_VISIBLE ,CRect(100,rcClient.bottom-25,100+45,rcClient.bottom-25+17),this,IDC_BTN_SEARCH);
	strMouseOut.LoadStringW(IDS_PATH_SEARCHBTN_MOUSEOUT);
	strMouseIn.LoadStringW(IDS_PATH_SEARCHBTN_MOUSEIN);	
	m_searchBtn.SetIcon(strMouseOut,strMouseIn);
	m_searchBtn.SetWindowTextW(_T("查找"));
	m_searchBtn.SetColor(RGB(255,255,255),RGB(0,0,0));

	m_skintab.MoveWindow(3,68,27,33*4+4);

	int tabcount = 4;
	m_skintab.SetCount(tabcount);
	for(int i=0;i<tabcount;i++)
	{
		m_skintab.SetRect(i,CRect(0,33*i,27,33*i+33));
		m_skintab.SetSkin(i,_T("image\\barback_normal.bmp"),_T("image\\barback_over.bmp"),_T("image\\barback_disabled.bmp"));
	}
	m_skintab.SetIcon(0,_T("image\\FriendButton.ico"));
	m_skintab.SetIcon(1,_T("image\\NetDiskButton.ico"));
	m_skintab.SetIcon(2,_T("image\\EaseButton.ico"));
	m_skintab.SetIcon(3,_T("image\\BlankPanel.ico"));

	CenterWindow();//居中屏幕

	return TRUE;  // 除非将焦点设置到控件,否则返回 TRUE
}

// 如果向对话框添加最小化按钮,则需要下面的代码
//  来绘制该图标。对于使用文档/视图模型的 MFC 应用程序,
//  这将由框架自动完成。

void CNUKDlg::OnPaint()
{
	if (IsIconic())
	{
		CPaintDC dc(this); // 用于绘制的设备上下文

		SendMessage(WM_ICONERASEBKGND, reinterpret_cast<WPARAM>(dc.GetSafeHdc()), 0);

		// 使图标在工作矩形中居中
		int cxIcon = GetSystemMetrics(SM_CXICON);
		int cyIcon = GetSystemMetrics(SM_CYICON);
		CRect rect;
		GetClientRect(&rect);
		int x = (rect.Width() - cxIcon + 1) / 2;
		int y = (rect.Height() - cyIcon + 1) / 2;

		// 绘制图标
		dc.DrawIcon(x, y, m_hIcon);
	}
	else
	{
		CPaintDC dc(this); // 用于绘制的设备上下文
		
		// TODO: 在此处添加消息处理程序代码

		CRect rcClient;
		GetClientRect(&rcClient);

		//调整控件位置////////////////////////////
		CRect rcCloseBtn;
		m_closeBtn.GetClientRect(&rcCloseBtn);
		m_closeBtn.MoveWindow(rcClient.Width()-21,5,rcCloseBtn.Width(),rcCloseBtn.Height());

		CRect rcMobileBtn;
		m_mobileBtn.GetClientRect(&rcMobileBtn);
		m_mobileBtn.MoveWindow(12,rcClient.bottom-52,rcMobileBtn.Width(),rcMobileBtn.Height());

		CRect rcGameBtn;
		m_gameBtn.GetClientRect(&rcGameBtn);
		m_gameBtn.MoveWindow(12+26,rcClient.bottom-52,rcGameBtn.Width(),rcGameBtn.Height());

		CRect rcTTBtn;
		m_ttBtn.GetClientRect(&rcTTBtn);
		m_ttBtn.MoveWindow(12+26*2,rcClient.bottom-52,rcTTBtn.Width(),rcTTBtn.Height());

		CRect rcChatBtn;
		m_chatBtn.GetClientRect(&rcChatBtn);
		m_chatBtn.MoveWindow(12+26*3,rcClient.bottom-52,rcChatBtn.Width(),rcChatBtn.Height());

		CRect rcPetBtn;
		m_petBtn.GetClientRect(&rcPetBtn);
		m_petBtn.MoveWindow(12+26*4,rcClient.bottom-52,rcPetBtn.Width(),rcPetBtn.Height());

		CRect rcMusicBtn;
		m_musicBtn.GetClientRect(&rcMusicBtn);
		m_musicBtn.MoveWindow(12+26*5,rcClient.bottom-52,rcMusicBtn.Width(),rcMusicBtn.Height());

		CRect rcTVBtn;
		m_tvBtn.GetClientRect(&rcTVBtn);
		m_tvBtn.MoveWindow(12+26*6,rcClient.bottom-52,rcTVBtn.Width(),rcTVBtn.Height());
		if(12+26*6+rcTVBtn.Width()+2>rcClient.Width())
			m_tvBtn.ShowWindow(false);
		else 
			m_tvBtn.ShowWindow(true);

		CRect rcMenuBtn;
		m_menuBtn.GetClientRect(&rcMenuBtn);
		m_menuBtn.MoveWindow(0,rcClient.bottom-30,rcMenuBtn.Width(),rcMenuBtn.Height());

		CRect rcMsgBtn;
		m_msgManagerBtn.GetClientRect(&rcMsgBtn);
		m_msgManagerBtn.MoveWindow(75,rcClient.bottom-25,rcMsgBtn.Width(),rcMsgBtn.Height());

		CRect rcSearchBtn;
		m_searchBtn.GetClientRect(&rcSearchBtn);
		m_searchBtn.MoveWindow(100,rcClient.bottom-25,rcSearchBtn.Width(),rcSearchBtn.Height());

		//内存画图//////////////////////////
		CDC m_MemDC;
		m_MemDC.CreateCompatibleDC(&dc);

		CBitmap btScreen;
		btScreen.CreateCompatibleBitmap(&dc, rcClient.Width(), rcClient.Height());

		m_MemDC.SelectObject(&btScreen);
		btScreen.DeleteObject();

		//画背景
		m_MemDC.Rectangle(rcClient);
		DrawPosImage(&m_BitmapCenterMid, &m_MemDC, CPoint(rcClient.Width()-m_szBitmapCenterRight.cx-m_szBitmapCenterMid.cx,
			rcClient.Height()-m_szBitmapBottomMid.cy-m_szBitmapCenterMid.cy));

		DrawPosImage(&m_BitmapTopLeft, &m_MemDC, CPoint(0, 0));
		DrawRangeImage(&m_BitmapTopMid, &m_MemDC, CRect(m_szBitmapTopLeft.cx, 0, rcClient.Width()-m_szBitmapTopRight.cx, m_szBitmapTopMid.cy));
		DrawPosImage(&m_BitmapTopRight, &m_MemDC, CPoint(rcClient.Width()-m_szBitmapTopRight.cx, 0));

		DrawRangeImage(&m_BitmapCenterLeft, &m_MemDC, CRect(0, m_szBitmapTopLeft.cy, m_szBitmapCenterLeft.cx, rcClient.Height()-m_szBitmapBottomLeft.cy));
		DrawRangeImage(&m_BitmapCenterRight, &m_MemDC, CRect(rcClient.Width()-m_szBitmapCenterRight.cx, m_szBitmapTopRight.cy, 
			rcClient.Width(), rcClient.Height()-m_szBitmapBottomRight.cy));
		
		DrawPosImage(&m_BitmapBottomLeft, &m_MemDC, CPoint(0, rcClient.Height()-m_szBitmapBottomLeft.cy));
		DrawRangeImage(&m_BitmapBottomMid, &m_MemDC, CRect(m_szBitmapBottomLeft.cx, rcClient.Height()-m_szBitmapBottomMid.cy,
			rcClient.Width()-m_szBitmapBottomRight.cx, rcClient.Height()));
		DrawPosImage(&m_BitmapBottomRight, &m_MemDC, CPoint(rcClient.Width()-m_szBitmapBottomRight.cx, rcClient.Height()-m_szBitmapBottomRight.cy));

		//画上线状态的字
		m_MemDC.SelectObject(m_font);
		m_MemDC.SetTextColor(RGB(0,28,123));
		m_MemDC.SetBkMode(TRANSPARENT);
		m_MemDC.DrawText(m_strStatus,CRect(55,30,55+100,30+16),DT_CENTER|DT_VCENTER|DT_SINGLELINE);

		//创建不规则窗体
		ChangeWindowRgn(&m_MemDC);

		//重画控件/////////////////////////
		ReDrawCrl(&m_MemDC);

		//画到显示器上////////////////////////////
		dc.BitBlt(rcClient.left, rcClient.top, rcClient.Width(), rcClient.Height(), &m_MemDC, 0, 0, SRCCOPY);

		m_MemDC.DeleteDC();
	}
}

//当用户拖动最小化窗口时系统调用此函数取得光标显示。
//
HCURSOR CNUKDlg::OnQueryDragIcon()
{
	return static_cast<HCURSOR>(m_hIcon);
}


void CNUKDlg::OnGetMinMaxInfo(MINMAXINFO* lpMMI)
{
	// TODO: 在此添加消息处理程序代码和/或调用默认值
	//lpMMI->ptMinTrackSize.x = 170;
	//lpMMI->ptMinTrackSize.y = 400;

	CDialog::OnGetMinMaxInfo(lpMMI);
}

//定点画位图
void CNUKDlg::DrawPosImage(CBitmap *pBitmap, CDC *pDC, CPoint pt)
{
	CDC MemDC;
	MemDC.CreateCompatibleDC(pDC);
	CBitmap *pOldBitmap = (CBitmap*)MemDC.SelectObject(pBitmap);

	BITMAP bm;
	pBitmap->GetBitmap(&bm);
	int li_Width = bm.bmWidth;
	int li_Height = bm.bmHeight;

	pDC->BitBlt(pt.x, pt.y, li_Width, li_Height, &MemDC, 0, 0, SRCCOPY);
	
	MemDC.SelectObject(pOldBitmap);
	MemDC.DeleteDC();
}

//平铺画位图
void CNUKDlg::DrawRangeImage(CBitmap *pBitmap, CDC *pDC, CRect rc)
{
	CDC MemDC;
	BITMAP bm;
	pBitmap->GetBitmap(&bm);

	int li_Width = bm.bmWidth;
	int li_Height = bm.bmHeight;

	MemDC.CreateCompatibleDC(pDC);
	CBitmap* pOldBitmap = MemDC.SelectObject(pBitmap);

	int x=rc.left;
	int y=rc.top;
	while (y < (rc.Height()+rc.top)) 
 	{
 		while(x < (rc.Width()+rc.left)) 
 		{
			pDC->BitBlt(x, y, li_Width, li_Height, &MemDC, 0, 0, SRCCOPY);
 			x += li_Width;
 		}
		x = rc.left;
 		y += li_Height;
 	}

	MemDC.SelectObject(pOldBitmap);
	MemDC.DeleteDC();
}

//载入硬盘位图
void CNUKDlg::SetImage(CBitmap &bitmap, CString strName)
{
	HBITMAP hBitmap = NULL;
	hBitmap = (HBITMAP)::LoadImage(NULL, strName, IMAGE_BITMAP, 0, 0, LR_DEFAULTSIZE|LR_LOADFROMFILE);
	//ASSERT(hBitmap);

	if(hBitmap == NULL)
	{
		CString str;
		str.LoadStringW(IDS_ERROR_NOBMP);
		AfxMessageBox(str);
		PostQuitMessage(0);
	}

	if (bitmap.m_hObject)
		bitmap.Detach();

	bitmap.Attach(hBitmap);
}

//载入资源位图
void CNUKDlg::SetImage(CBitmap &bitmap, UINT nID)
{
	if (bitmap.m_hObject)
		bitmap.Detach();

	bitmap.LoadBitmap(nID);
}

//保存位图尺寸
void CNUKDlg::SetImageSize(CBitmap *pBitmap, CSize &sz)
{
	BITMAP bm;
	pBitmap->GetBitmap(&bm);

	sz = CSize(bm.bmWidth, bm.bmHeight);
}

//////////////////////////////////////////////////////////////////////
//载入左上角的硬盘位图
void CNUKDlg::SetTopLeftImage(UINT nID)
{
	SetImage(m_BitmapTopLeft, nID);
	SetImageSize(&m_BitmapTopLeft, m_szBitmapTopLeft);
}

//载入左上角的资源位图
void CNUKDlg::SetTopLeftImage(CString strName)
{
	SetImage(m_BitmapTopLeft, strName);
	SetImageSize(&m_BitmapTopLeft, m_szBitmapTopLeft);
}

//载入上方的硬盘位图
void CNUKDlg::SetTopMidImage(UINT nID)
{
	SetImage(m_BitmapTopMid, nID);
	SetImageSize(&m_BitmapTopMid, m_szBitmapTopMid);
}

//载入上方的资源位图
void CNUKDlg::SetTopMidImage(CString strName)
{
	SetImage(m_BitmapTopMid, strName);
	SetImageSize(&m_BitmapTopMid, m_szBitmapTopMid);
}

//载入右上角的硬盘位图
void CNUKDlg::SetTopRightImage(UINT nID)
{
	SetImage(m_BitmapTopRight, nID);
	SetImageSize(&m_BitmapTopRight, m_szBitmapTopRight);
}

//载入右上角的资源位图
void CNUKDlg::SetTopRightImage(CString strName)
{
	SetImage(m_BitmapTopRight, strName);
	SetImageSize(&m_BitmapTopRight, m_szBitmapTopRight);
}

////////////////////////////////////////////////////////////////////////////////////
//载入左方的硬盘位图
void CNUKDlg::SetCenterLeftImage(UINT nID)
{
	SetImage(m_BitmapCenterLeft, nID);
	SetImageSize(&m_BitmapCenterLeft, m_szBitmapCenterLeft);
}

//载入左方的资源位图
void CNUKDlg::SetCenterLeftImage(CString strName)
{
	SetImage(m_BitmapCenterLeft, strName);
	SetImageSize(&m_BitmapCenterLeft, m_szBitmapCenterLeft);
}

//载入中间的硬盘位图
void CNUKDlg::SetCenterMidImage(UINT nID)
{
	SetImage(m_BitmapCenterMid, nID);
	SetImageSize(&m_BitmapCenterMid, m_szBitmapCenterMid);
}

//载入中间的资源位图
void CNUKDlg::SetCenterMidImage(CString strName)
{
	SetImage(m_BitmapCenterMid, strName);
	SetImageSize(&m_BitmapCenterMid, m_szBitmapCenterMid);
}

//载入右方的硬盘位图
void CNUKDlg::SetCenterRightImage(UINT nID)
{
	SetImage(m_BitmapCenterRight, nID);
	SetImageSize(&m_BitmapCenterRight, m_szBitmapCenterRight);
}

//载入右方的资源位图
void CNUKDlg::SetCenterRightImage(CString strName)
{
	SetImage(m_BitmapCenterRight, strName);
	SetImageSize(&m_BitmapCenterRight, m_szBitmapCenterRight);
}

////////////////////////////////////////////////////////////////////////////////
//载入左下角的硬盘位图
void CNUKDlg::SetBottomLeftImage(UINT nID)
{
	SetImage(m_BitmapBottomLeft, nID);
	SetImageSize(&m_BitmapBottomLeft, m_szBitmapBottomLeft);
}

//载入左下角的资源位图
void CNUKDlg::SetBottomLeftImage(CString strName)
{
	SetImage(m_BitmapBottomLeft, strName);
	SetImageSize(&m_BitmapBottomLeft, m_szBitmapBottomLeft);
}

//载入下方的硬盘位图
void CNUKDlg::SetBottomMidImage(UINT nID)
{
	SetImage(m_BitmapBottomMid, nID);
	SetImageSize(&m_BitmapBottomMid, m_szBitmapBottomMid);
}

//载入下方的资源位图
void CNUKDlg::SetBottomMidImage(CString strName)
{
	SetImage(m_BitmapBottomMid, strName);
	SetImageSize(&m_BitmapBottomMid, m_szBitmapBottomMid);
}

//载入右下角的硬盘位图
void CNUKDlg::SetBottomRightImage(UINT nID)
{
	SetImage(m_BitmapBottomRight, nID);
	SetImageSize(&m_BitmapBottomRight, m_szBitmapBottomRight);
}

//载入右下角的资源位图
void CNUKDlg::SetBottomRightImage(CString strName)
{
	SetImage(m_BitmapBottomRight, strName);
	SetImageSize(&m_BitmapBottomRight, m_szBitmapBottomRight);
}
void CNUKDlg::OnSizing(UINT fwSide, LPRECT pRect)
{
	CDialog::OnSizing(fwSide, pRect);

	// TODO: 在此处添加消息处理程序代码
	Invalidate();
}

BOOL CNUKDlg::OnEraseBkgnd(CDC* pDC)
{
	// TODO: 在此添加消息处理程序代码和/或调用默认值

	return TRUE;//CDialog::OnEraseBkgnd(pDC);//
}

void CNUKDlg::OnLButtonDown(UINT nFlags, CPoint point)
{
	// TODO: 在此添加消息处理程序代码和/或调用默认值

	m_bMouseDown = true;
	
	SetCapture();		   //设置鼠标全屏捕捉
    m_ptCurPoint=point;	   //记下按下时的鼠标坐标
	CRect rc;
	GetWindowRect(rc);
	m_rcCurRect = rc;//
	CRect rcW(0,0,rc.Width(),rc.Height());

	CRect rcW1(rcW.left+BorderSpace, rcW.top+BorderSpace, rcW.left+PointSpace+BorderSpace, rcW.top+PointSpace+BorderSpace);
	CRect rcW2(rcW.left+BorderSpace, rcW.top, rcW.right-BorderSpace, rcW.top+BorderSpace);
	CRect rcW3(rcW.right-PointSpace-BorderSpace, rcW.top+BorderSpace, rcW.right-BorderSpace, rcW.top+PointSpace+BorderSpace);

	CRect rcW4(rcW.left, rcW.top+BorderSpace, rcW.left+BorderSpace, rcW.bottom-BorderSpace);
	CRect rcW5(rcW.left+BorderSpace, rcW.top+BorderSpace, rcW.right-BorderSpace, rcW.bottom-BorderSpace);
	CRect rcW6(rcW.right-BorderSpace, rcW.top+BorderSpace, rcW.right, rcW.bottom-BorderSpace);

	CRect rcW7(rcW.left+BorderSpace, rcW.bottom-PointSpace-BorderSpace, rcW.left+PointSpace+BorderSpace, rcW.bottom-BorderSpace);
	CRect rcW8(rcW.left+BorderSpace, rcW.bottom-BorderSpace, rcW.right-BorderSpace, rcW.bottom);
	CRect rcW9(rcW.right-PointSpace-BorderSpace, rcW.bottom-PointSpace-BorderSpace, rcW.right-BorderSpace, rcW.bottom-BorderSpace);
	if(rcW2.PtInRect(point))
	{
		SetTimer(2,20,NULL);
		return;
	}
	if(rcW4.PtInRect(point))
	{
		SetTimer(4,20,NULL);
		return;
	}
	if(rcW5.PtInRect(point))
	{
		if(rcW1.PtInRect(point))
		{
			SetTimer(1,20,NULL);
			return;
		}
		else if(rcW3.PtInRect(point))
		{
			SetTimer(3,20,NULL);
			return;
		}
		else if(rcW7.PtInRect(point))
		{
			SetTimer(7,20,NULL);
			return;
		}
		else if(rcW9.PtInRect(point))
		{
			SetTimer(9,20,NULL);
			return;
		}
		else
		{
			SetTimer(5,20,NULL);
			return;
		}
	}
	if(rcW6.PtInRect(point))
	{
		SetTimer(6,20,NULL);
		return;
	}
	if(rcW8.PtInRect(point))
	{
		SetTimer(8,20,NULL);
		return;
	}
	
	CDialog::OnLButtonDown(nFlags, point);
}

void CNUKDlg::OnTimer(UINT_PTR nIDEvent)
{
	// TODO: 在此添加消息处理程序代码和/或调用默认值
	switch(nIDEvent)
	{
	case(1):	
		{
			CRect rcW;
			POINT point;
			GetWindowRect(rcW);//

			//实现拖动时窗体跟着右下角拉伸
			::GetCursorPos(&point);	//	
			if(point.y<rcW.bottom-400&&point.x<rcW.right-170)
			{
				MoveWindow(point.x-m_ptCurPoint.x,point.y-m_ptCurPoint.y, 
					m_rcCurRect.right-(point.x-m_ptCurPoint.x),
					m_rcCurRect.bottom-(point.y-m_ptCurPoint.y), true);

				CRect rc;
				GetWindowRect(rc);
				m_rcCurRect = rc;
			}
			else if(point.y<rcW.bottom-400&&point.x>rcW.right-170)
			{
				MoveWindow(m_rcCurRect.left ,point.y-m_ptCurPoint.y, 
					rcW.Width(),
					m_rcCurRect.bottom-(point.y-m_ptCurPoint.y), true);

				CRect rc;
				GetWindowRect(rc);
				m_rcCurRect = rc;
			}
			else if(point.y>rcW.bottom-400&&point.x<rcW.right-170)
			{
				MoveWindow(point.x-m_ptCurPoint.x,m_rcCurRect.top, 
					m_rcCurRect.right-(point.x-m_ptCurPoint.x),
					rcW.Height(), true);

				CRect rc;
				GetWindowRect(rc);
				m_rcCurRect = rc;
			}
		
			Invalidate();
		}
		break;
	case(2):	
		{
			CRect rcW;
			POINT point;
			GetWindowRect(rcW);//

			//实现拖动时窗体跟着右下角拉伸
			::GetCursorPos(&point);	//
			if(point.y<rcW.bottom-400)
			{
				MoveWindow(m_rcCurRect.left ,point.y-m_ptCurPoint.y, 
					rcW.Width(),
					m_rcCurRect.bottom-(point.y-m_ptCurPoint.y), true);

				CRect rc;
				GetWindowRect(rc);
				m_rcCurRect = rc;
			}

			Invalidate();
		}
		break;
	case(3):	
		{
			CRect rcW;
			POINT point;
			GetWindowRect(rcW);//

			//实现拖动时窗体跟着右边拉伸
			::GetCursorPos(&point);	//	
			if(point.y<rcW.bottom-400&&point.x>rcW.left+170)
			{
				MoveWindow(m_rcCurRect.left ,point.y-m_ptCurPoint.y, 
					rcW.Width()+point.x-(m_ptCurPoint.x+m_rcCurRect.left),
					rcW.Height()-(point.y-m_ptCurPoint.y-m_rcCurRect.top), true);

				m_ptCurPoint.x=point.x-m_rcCurRect.left;

				CRect rc;
				GetWindowRect(rc);
				m_rcCurRect = rc;
			}
			else if(point.y<rcW.bottom-400&&point.x<rcW.left+170)
			{
				MoveWindow(m_rcCurRect.left ,point.y-m_ptCurPoint.y, 
					170,
					m_rcCurRect.bottom-(point.y-m_ptCurPoint.y), true);
				m_ptCurPoint.x=170;

				CRect rc;
				GetWindowRect(rc);
				m_rcCurRect = rc;
			}
			else if(point.y>rcW.bottom-400&&point.x>rcW.left+170)
			{
				MoveWindow(m_rcCurRect.left ,m_rcCurRect.top, 
					rcW.Width()+point.x-(m_ptCurPoint.x+m_rcCurRect.left),
					m_rcCurRect.Height(), true);

				m_ptCurPoint.x=point.x-m_rcCurRect.left;
				CRect rc;
				GetWindowRect(rc);
				m_rcCurRect = rc;
			}

			Invalidate();
		}
		break;
	case(4):	
		{
			CRect rcW;
			POINT point;
			GetWindowRect(rcW);//

			//实现拖动时窗体跟着右下角拉伸
			::GetCursorPos(&point);	//	
			if(point.x<rcW.right-170)
			{
				MoveWindow(point.x-m_ptCurPoint.x,m_rcCurRect.top, 
					m_rcCurRect.right-(point.x-m_ptCurPoint.x),
					rcW.Height(), true);

				CRect rc;
				GetWindowRect(rc);
				m_rcCurRect = rc;
			}
			
			Invalidate();
		}
		break;
	case(5):	
		{
			CRect rcW;
			POINT point;
			GetWindowRect(rcW);

			//实现拖动时窗体跟着移动
			::GetCursorPos(&point);			
			MoveWindow(point.x-m_ptCurPoint.x ,point.y-m_ptCurPoint.y ,rcW.Width(),rcW.Height() ,true); 
		}
		break;
	case(6):
		{
			CRect rcW;
			POINT point;
			GetWindowRect(rcW);//

			//实现拖动时窗体跟着右边拉伸
			::GetCursorPos(&point);	//	
			if(point.x>rcW.left+170)
			{
				MoveWindow(m_rcCurRect.left ,m_rcCurRect.top, 
					rcW.Width()+point.x-(m_ptCurPoint.x+m_rcCurRect.left),
					rcW.Height(), true);

				m_ptCurPoint.x=point.x-m_rcCurRect.left;
				CRect rc;
				GetWindowRect(rc);
				m_rcCurRect = rc;
			}
			
			Invalidate();
		}
		break;
	case(7):	
		{
			CRect rcW;
			POINT point;
			GetWindowRect(rcW);//

			//实现拖动时窗体跟着右边拉伸
			::GetCursorPos(&point);	//	
			if(point.y>rcW.top+400&&point.x<rcW.right-170)
			{
				MoveWindow(point.x-m_ptCurPoint.x,m_rcCurRect.top, 
					m_rcCurRect.right-(point.x-m_ptCurPoint.x),
					rcW.Height()+(point.y-m_ptCurPoint.y-m_rcCurRect.top), true);

				m_ptCurPoint.y=point.y-m_rcCurRect.top;
				CRect rc;
				GetWindowRect(rc);
				m_rcCurRect = rc;
			}
			else if(point.y<rcW.top+400&&point.x<rcW.right-170)
			{
				MoveWindow(point.x-m_ptCurPoint.x,m_rcCurRect.top, 
					m_rcCurRect.right-(point.x-m_ptCurPoint.x),
					rcW.Height(), true);

				CRect rc;
				GetWindowRect(rc);
				m_rcCurRect = rc;
			}
			else if(point.y>rcW.top+400&&point.x>rcW.right-170)
			{
				MoveWindow(m_rcCurRect.left ,m_rcCurRect.top, 
					rcW.Width(),
					rcW.Height()+point.y-(m_ptCurPoint.y+m_rcCurRect.top), true);

				m_ptCurPoint.x=0;
				m_ptCurPoint.y=point.y-m_rcCurRect.top;
				CRect rc;
				GetWindowRect(rc);
				m_rcCurRect = rc;
			}

			Invalidate();
		}
		break;
	case(8):	
		{
			CRect rcW;
			POINT point;
			GetWindowRect(rcW);//

			//实现拖动时窗体跟着右边拉伸
			::GetCursorPos(&point);	//	
			if(point.y>rcW.top+400)
			{
				MoveWindow(m_rcCurRect.left ,m_rcCurRect.top, 
					rcW.Width(),
					rcW.Height()+point.y-(m_ptCurPoint.y+m_rcCurRect.top), true);

				m_ptCurPoint.y=point.y-m_rcCurRect.top;
				CRect rc;
				GetWindowRect(rc);
				m_rcCurRect = rc;
			}

			Invalidate();
		}
		break;
	case(9):
		{
			CRect rcW;
			POINT point;
			GetWindowRect(rcW);//

			//实现拖动时窗体跟着右下角拉伸
			::GetCursorPos(&point);	//	

			if(point.y>rcW.top+400&&point.x>rcW.left+170)
			{
				MoveWindow(m_rcCurRect.left ,m_rcCurRect.top, 
					rcW.Width()+point.x-(m_ptCurPoint.x+m_rcCurRect.left),
					rcW.Height()+point.y-(m_ptCurPoint.y+m_rcCurRect.top), true);

				m_ptCurPoint.x=point.x-m_rcCurRect.left;
				m_ptCurPoint.y=point.y-m_rcCurRect.top;
				CRect rc;
				GetWindowRect(rc);
				m_rcCurRect = rc;
			}
			else if(point.y>rcW.top+400&&point.x<rcW.left+170)
			{
				MoveWindow(m_rcCurRect.left ,m_rcCurRect.top, 
					170,
					rcW.Height()+point.y-(m_ptCurPoint.y+m_rcCurRect.top), true);

				m_ptCurPoint.x=170;
				m_ptCurPoint.y=point.y-m_rcCurRect.top;
				CRect rc;
				GetWindowRect(rc);
				m_rcCurRect = rc;
			}
			else if(point.y<rcW.top+400&&point.x>rcW.left+170)
			{
				MoveWindow(m_rcCurRect.left ,m_rcCurRect.top, 
					rcW.Width()+point.x-(m_ptCurPoint.x+m_rcCurRect.left),
					400, true);

				m_ptCurPoint.x=point.x-m_rcCurRect.left;
				m_ptCurPoint.y=400;
				CRect rc;
				GetWindowRect(rc);
				m_rcCurRect = rc;
			}

			Invalidate();
		}
		break;
	default:
		break;
	}
	CDialog::OnTimer(nIDEvent);
}

void CNUKDlg::OnLButtonUp(UINT nFlags, CPoint point)
{
	// TODO: 在此添加消息处理程序代码和/或调用默认值
	m_bMouseDown=false;
	ReleaseCapture();
	KillTimer(1);		//关闭拖动时记数器 
	KillTimer(2);		//关闭拖动时记数器 
	KillTimer(3);		//关闭拖动时记数器 
	KillTimer(4);		//关闭拖动时记数器 
	KillTimer(5);		//关闭拖动时记数器 
	KillTimer(6);		//关闭右边拉伸时记数器 
	KillTimer(7);		//关闭拖动时记数器 
	KillTimer(8);		//关闭拖动时记数器
	KillTimer(9);		//关闭右下角拉伸时记数器 

	CDialog::OnLButtonUp(nFlags, point);
}

void CNUKDlg::ChangeWindowRgn(CDC *pDC)
{
	COLORREF col = RGB(255,0,255);

	CRect rcClient;
	GetClientRect (rcClient);
	CRgn rgn;
	rgn.CreateRectRgn (0, 0, rcClient.Width(), rcClient.Height());
	int i=6;
	for (int y=0; y<i; y++)
	{
		for (int x=0; x<i; x++)
		{
			// If this pixel is transparent
			if (pDC->GetPixel(x,y)==col)
			{
				CRgn rgnAdd;
				rgnAdd.CreateRectRgn (x,
					y, x+1, y+1);
				rgn.CombineRgn(&rgn, &rgnAdd, RGN_DIFF);
			}
		}
		for (int x=rcClient.Width()-i; x<rcClient.Width(); x++)
		{
			// If this pixel is transparent
			if (pDC->GetPixel(x,y)==col)
			{
				CRgn rgnAdd;
				rgnAdd.CreateRectRgn (x,
					y, x+1, y+1);
				rgn.CombineRgn(&rgn, &rgnAdd, RGN_DIFF);
			}
		}
	}	
	for (int y=rcClient.Height()-i; y<rcClient.Height(); y++)
	{
		for (int x=0; x<i; x++)
		{
			// If this pixel is transparent
			if (pDC->GetPixel(x,y)==col)
			{
				CRgn rgnAdd;
				rgnAdd.CreateRectRgn (x,
					y, x+1, y+1);
				rgn.CombineRgn(&rgn, &rgnAdd, RGN_DIFF);
			}
		}
		for (int x=rcClient.Width()-i; x<rcClient.Width(); x++)
		{
			// If this pixel is transparent
			if (pDC->GetPixel(x,y)==col)
			{
				CRgn rgnAdd;
				rgnAdd.CreateRectRgn (x,
					y, x+1, y+1);
				rgn.CombineRgn(&rgn, &rgnAdd, RGN_DIFF);
			}
		}
	}

	SetWindowRgn (rgn, TRUE);
}
BOOL CNUKDlg::OnSetCursor(CWnd* pWnd, UINT nHitTest, UINT message)
{
	// TODO: 在此添加消息处理程序代码和/或调用默认值
	switch(m_icur)
	{
	case 1:
	case 9:
		::SetCursor(AfxGetApp()->LoadStandardCursor(IDC_SIZENWSE));
		return TRUE;
	case 2:
	case 8:
		::SetCursor(AfxGetApp()->LoadStandardCursor(IDC_SIZENS));
		return TRUE;
	case 3:
	case 7:
		::SetCursor(AfxGetApp()->LoadStandardCursor(IDC_SIZENESW));
		return TRUE;
	case 4:
	case 6:
		::SetCursor(AfxGetApp()->LoadStandardCursor(IDC_SIZEWE));
		return TRUE;
	default:
		::SetCursor(AfxGetApp()->LoadStandardCursor(IDC_ARROW));
		return TRUE;
	}

	return CDialog::OnSetCursor(pWnd, nHitTest, message);
}

void CNUKDlg::OnMouseMove(UINT nFlags, CPoint point)
{
	// TODO: 在此添加消息处理程序代码和/或调用默认值
	CRect rc;
	GetWindowRect(rc);
	m_rcCurRect = rc;//
	CRect rcW(0,0,rc.Width(),rc.Height());

	CRect rcW1(rcW.left+BorderSpace, rcW.top+BorderSpace, rcW.left+PointSpace+BorderSpace, rcW.top+PointSpace+BorderSpace);
	CRect rcW2(rcW.left+BorderSpace, rcW.top, rcW.right-BorderSpace, rcW.top+BorderSpace);
	CRect rcW3(rcW.right-PointSpace-BorderSpace, rcW.top+BorderSpace, rcW.right-BorderSpace, rcW.top+PointSpace+BorderSpace);

	CRect rcW4(rcW.left, rcW.top+BorderSpace, rcW.left+BorderSpace, rcW.bottom-BorderSpace);
	CRect rcW5(rcW.left+BorderSpace, rcW.top+BorderSpace, rcW.right-BorderSpace, rcW.bottom-BorderSpace);
	CRect rcW6(rcW.right-BorderSpace, rcW.top+BorderSpace, rcW.right, rcW.bottom-BorderSpace);

	CRect rcW7(rcW.left+BorderSpace, rcW.bottom-PointSpace-BorderSpace, rcW.left+PointSpace+BorderSpace, rcW.bottom-BorderSpace);
	CRect rcW8(rcW.left+BorderSpace, rcW.bottom-BorderSpace, rcW.right-BorderSpace, rcW.bottom);
	CRect rcW9(rcW.right-PointSpace-BorderSpace, rcW.bottom-PointSpace-BorderSpace, rcW.right-BorderSpace, rcW.bottom-BorderSpace);
	if(rcW2.PtInRect(point))
	{
		m_icur = 2;
	}
	if(rcW4.PtInRect(point))
	{
		m_icur = 4;
	}
	if(rcW5.PtInRect(point))
	{
		if(rcW1.PtInRect(point))
		{
			m_icur = 1;
		}
		else if(rcW3.PtInRect(point))
		{
			m_icur = 3;
		}
		else if(rcW7.PtInRect(point))
		{
			m_icur = 7;
		}
		else if(rcW9.PtInRect(point))
		{
			m_icur = 9;
		}
		else
		{
			m_icur = 5;
		}
	}
	if(rcW6.PtInRect(point))
	{
		m_icur = 6;
	}
	if(rcW8.PtInRect(point))
	{
		m_icur = 8;
	}

	CDialog::OnMouseMove(nFlags, point);
}


void CNUKDlg::OnBnClickedCloseBtn()
{
	// TODO: 在此添加控件通知处理程序代码
	PostQuitMessage(0);
}

void CNUKDlg::OnBnClickedMenuBtn()
{
	// TODO: 在此添加控件通知处理程序代码
	MessageBox(_T("作者:黄锐坤\n毕业学校:韩山师范学院\nQQ:89642685\nE-mail:meet-xp@126.com"));
}

void CNUKDlg::OnBnClickedUserHeardBtn()
{
	// TODO: 在此添加控件通知处理程序代码
}

void CNUKDlg::OnBnClickedSearchBtn()
{
	// TODO: 在此添加控件通知处理程序代码
	if(IDYES==MessageBox(_T("欢迎您加我为QQ好友\n现在就给我QQ留言吧"),NULL,MB_YESNO))
	{
		ShellExecute(m_hWnd, NULL, _T("http://wpa.qq.com/msgrd?V=1&Uin=89642685&Site=NUK程序使用者&Menu=yes"), NULL, NULL, SW_HIDE);
	}
}

void CNUKDlg::OnBnClickedHostingBtn()
{
	// TODO: 在此添加控件通知处理程序代码
	if(IDYES==MessageBox(_T("欢迎您访问VC知识库\n现在就行动吗"),NULL,MB_YESNO))
	{
		ShellExecute(m_hWnd, NULL, _T("http://www.vckbase.com"), NULL, NULL, SW_HIDE);
	}
}

void CNUKDlg::OnBnClickedStatusBtn()
{
	// TODO: 在此添加控件通知处理程序代码
	//CPoint point;
	//GetCursorPos(&point);

	COfficeXPMenu m_popmenu;
	m_popmenu.LoadMenu(IDR_MENU_STATUS);	
	m_popmenu.SetType(TYPE_XP);
	CMenu *psub = (CMenu *)m_popmenu.GetSubMenu(0);
	CRect rect;
	m_statusBtn.GetWindowRect(rect);
	DWORD dwID =psub->TrackPopupMenu((TPM_LEFTALIGN|TPM_RIGHTBUTTON),
		rect.left,rect.top+27, this); 
}

void CNUKDlg::OnDestroy()
{
	CDialog::OnDestroy();

	// TODO: 在此处添加消息处理程序代码
}

void CNUKDlg::ReDrawCrl(CDC* m_MemDC)
{
	CRect rcClient;
	GetClientRect(&rcClient);

	static bool firstGetClientRect = true;
	static int preClientHeight = rcClient.Height();
	static int preClientWidth = rcClient.Width();
	if(firstGetClientRect)
	{
		firstGetClientRect = false;
	}
	if(firstGetClientRect||preClientHeight!=rcClient.Height()||preClientWidth!=rcClient.Width()||m_bMouseDown)
	{
		preClientHeight = rcClient.Height();
		preClientWidth = rcClient.Width();

		CImage *image=NULL;
		CRect rect;
		CRect rcIcon;
		CPoint ptText;
		CString strText;
		CFont font;
		font.CreatePointFont(90,_T("Arial"));
		m_MemDC->SelectObject(&font);

		image=m_closeBtn.GetPaintImage();
		rect = m_closeBtn.GetRectInParent();
		if(!image->IsNull())
			image->TransparentBlt(m_MemDC->m_hDC, rect.left,rect.top, 
			image->GetWidth(),image->GetHeight(), RGB(255,0,255));

		image=m_userHeadBtn.GetPaintImage();
		rect = m_userHeadBtn.GetRectInParent();
		if(!image->IsNull())
			image->TransparentBlt(m_MemDC->m_hDC, rect.left,rect.top, 
				image->GetWidth(),image->GetHeight(), RGB(255,0,255));
		image=m_statusBtn.GetPaintImage();
		rect = m_statusBtn.GetRectInParent();
		if(!image->IsNull())
			image->TransparentBlt(m_MemDC->m_hDC, rect.left,rect.top, 
				image->GetWidth(),image->GetHeight(), RGB(255,0,255));
		image=m_mailBtn.GetPaintIcon();
		rect = m_mailBtn.GetRectInParent();
		rcIcon = m_mailBtn.GetIconRect();
		if(!image->IsNull())
		{
			image->TransparentBlt(m_MemDC->m_hDC, rect.left,rect.top, 
				image->GetWidth(),image->GetHeight(), RGB(0,0,0));
			ptText = m_mailBtn.GetTextPos();
			m_mailBtn.GetWindowTextW(strText);
			m_MemDC->TextOutW(rect.left+ptText.x,rect.top+ptText.y,strText);
		}
		image=m_hostingBtn.GetPaintIcon();
		rect = m_hostingBtn.GetRectInParent();
		rcIcon = m_hostingBtn.GetIconRect();
		if(!image->IsNull())
		{
			image->TransparentBlt(m_MemDC->m_hDC, rect.left,rect.top, 
				image->GetWidth(),image->GetHeight(), RGB(0,0,0));
			ptText = m_hostingBtn.GetTextPos();
			m_hostingBtn.GetWindowTextW(strText);
			m_MemDC->TextOutW(rect.left+ptText.x,rect.top+ptText.y,strText);
		}
		image=m_paymentBtn.GetPaintIcon();
		rect = m_paymentBtn.GetRectInParent();
		rcIcon = m_paymentBtn.GetIconRect();
		if(!image->IsNull())
			image->TransparentBlt(m_MemDC->m_hDC, rect.left,rect.top, 
				image->GetWidth(),image->GetHeight(), RGB(0,0,0));

		image=m_mobileBtn.GetPaintIcon();
		rect = m_mobileBtn.GetRectInParent();
		rcIcon = m_mobileBtn.GetIconRect();
		if(!image->IsNull())
			image->TransparentBlt(m_MemDC->m_hDC, rect.left,rect.top, 
				image->GetWidth(),image->GetHeight(), RGB(0,0,0));
		image=m_gameBtn.GetPaintIcon();
		rect = m_gameBtn.GetRectInParent();
		rcIcon = m_gameBtn.GetIconRect();
		if(!image->IsNull())
			image->TransparentBlt(m_MemDC->m_hDC, rect.left,rect.top, 
				image->GetWidth(),image->GetHeight(), RGB(0,0,0));
		image=m_ttBtn.GetPaintIcon();
		rect = m_ttBtn.GetRectInParent();
		rcIcon = m_ttBtn.GetIconRect();
		if(!image->IsNull())
			image->TransparentBlt(m_MemDC->m_hDC, rect.left,rect.top, 
				image->GetWidth(),image->GetHeight(), RGB(0,0,0));
		image=m_chatBtn.GetPaintIcon();
		rect = m_chatBtn.GetRectInParent();
		rcIcon = m_chatBtn.GetIconRect();
		if(!image->IsNull())
			image->TransparentBlt(m_MemDC->m_hDC, rect.left,rect.top, 
				image->GetWidth(),image->GetHeight(), RGB(0,0,0));
		image=m_petBtn.GetPaintIcon();
		rect = m_petBtn.GetRectInParent();
		rcIcon = m_petBtn.GetIconRect();
		if(!image->IsNull())
			image->TransparentBlt(m_MemDC->m_hDC, rect.left,rect.top, 
				image->GetWidth(),image->GetHeight(), RGB(0,0,0));
		image=m_musicBtn.GetPaintIcon();
		rect = m_musicBtn.GetRectInParent();
		rcIcon = m_musicBtn.GetIconRect();
		if(!image->IsNull())
			image->TransparentBlt(m_MemDC->m_hDC, rect.left,rect.top, 
				image->GetWidth(),image->GetHeight(), RGB(0,0,0));
		if(m_tvBtn.IsWindowVisible())
		{
			image=m_tvBtn.GetPaintIcon();
			rect = m_tvBtn.GetRectInParent();
			rcIcon = m_tvBtn.GetIconRect();
			if(!image->IsNull())
				image->TransparentBlt(m_MemDC->m_hDC, rect.left,rect.top, 
					image->GetWidth(),image->GetHeight(), RGB(0,0,0));
		}

		image=m_menuBtn.GetPaintImage();
		rect = m_menuBtn.GetRectInParent();
		rcIcon = m_menuBtn.GetIconRect();
		if(!image->IsNull())
			image->TransparentBlt(m_MemDC->m_hDC,rect.left,rect.top, 
				image->GetWidth(),image->GetHeight(), RGB(255,0,255));
		image=m_msgManagerBtn.GetPaintIcon();
		rect = m_msgManagerBtn.GetRectInParent();
		rcIcon = m_msgManagerBtn.GetIconRect();
		if(!image->IsNull())
			image->TransparentBlt(m_MemDC->m_hDC,rect.left,rect.top, 
				image->GetWidth(),image->GetHeight(), RGB(0,0,0));
		image=m_searchBtn.GetPaintIcon();
		rect = m_searchBtn.GetRectInParent();
		rcIcon = m_searchBtn.GetIconRect();
		if(!image->IsNull())
		{
			image->TransparentBlt(m_MemDC->m_hDC, rect.left,rect.top, 
				image->GetWidth(),image->GetHeight(), RGB(0,0,0));
			ptText = m_searchBtn.GetTextPos();
			m_searchBtn.GetWindowTextW(strText);
			m_MemDC->SetTextColor(m_searchBtn.GetFGColor());
			m_MemDC->TextOutW(rect.left+ptText.x,rect.top+ptText.y,strText);
		}
		m_MemDC->BitBlt(3,68,27,33*4+4,m_skintab.GetWindowDC(),0,0,SRCCOPY);
	}
}